import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'path'
//* 导入icon
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
//* 自动导入模块
import autoImport from 'unplugin-auto-import/vite'
// 看README_NOTE说明
import vitePluginInspect from 'vite-plugin-inspect'


// https://vitejs.dev/config/
export default defineConfig((commad, mode, isSsrBuild, isPreview) => {
  /**
   * command === 'serve'  // dev 独有配置; command === 'build' // build 独有配置
   * isSsrBuild 和 isPreview 是额外的可选标志，用于区分 build 和 serve 命令的类型。
   * 一些加载 Vite 配置的工具可能不支持这些标志，而会传递 undefined。因此，建议使用 true 和 false 的显式比较。
   */

  // 根据当前工作目录中的 `mode` 加载 .env 文件
  // 设置第三个参数为 '' 来加载所有环境变量，而不管是否有 `VITE_` 前缀。
  // const env = loadEnv(mode, process.cwd(), '')
  return {
    // define: {
    //   __APP_ENV__: JSON.stringify(env.APP_ENV),
    // },
    plugins: [
      vue(),
      createSvgIconsPlugin({
        // Specify the icon folder to be cached
        iconDirs: [path.resolve(process.cwd(), 'src/icons')],
        // Specify symbolId format
        symbolId: 'icon-[dir]-[name]',
      }),
      // 自动导入相应模块
      autoImport({
        imports: [
          'vue-router',
          'vue',
          'pinia'
        ]
      }),
      vitePluginInspect()
    ],
    base: '/', // url路径是否要加前缀，如:/build/XXX;默认没前缀的；可以查看vite官网的部署静态站点里面的GitHub Pages
    resolve: {
      alias: {
        '@': path.resolve('./src'), // 相对路径别名配置，使用 @ 代替 src
      },
    },
    // 构建配置
    build: {
      // 输出目录，默认是 dist
      outDir: 'project',
      // 此选项允许用户覆盖 CSS 最小化压缩的配置，而不是使用默认的 build.minify，这样你就可以单独配置 JS 和 CSS 的最小化压缩方式。Vite 默认使用 esbuild 来最小化 CSS。 
      // cssMinify: true
    },
    // 服务器配置
    server: {
      open: false,
      // port: 3000,
      proxy: {
        '^/maps': {
          target: 'http://webapi.amap.com/',
          changeOrigin: true
        }
      }
    },
    css: {
      preprocessorOptions: {
        scss: {
          javascriptEnabled: true,
          additionalData: '@import "./src/styles/variable.scss";',
        },
      },
    }
  }
})
